/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author fernando
 */
public class LivroOrganizado extends Obra implements Serializable {

    public LivroOrganizado() {
        this.apoios = new ArrayList<Apoio>();
        this.organizadores = new ArrayList<Autor>();
        this.editora = new Editora();
        this.idioma = new Idioma();
        this.temas = new ArrayList<Tema>();
        this.formato = new Formato();
        this.capitulos = new ArrayList<Capitulo>();

    }

    public void addOrganizador(Autor a) {
        this.organizadores.add(a);
    }

    public void addCapitulo(Capitulo c) {
        this.capitulos.add(c);
    }

    public ArrayList<Autor> getOrganizadores() {
        return organizadores;
    }

    public void setOrganizadores(ArrayList<Autor> organizadores) {
        this.organizadores = organizadores;
    }

    public Formato getFormato() {
        return formato;
    }

    public void setFormato(Formato formato) {
        this.formato = formato;
    }

    public Editora getEditora() {
        return editora;
    }

    public void setEditora(Editora editora) {
        this.editora = editora;
    }

    public String getISSN_ISBN() {
        return ISSN_ISBN;
    }

    public void setISSN_ISBN(String ISSN_ISBN) {
        this.ISSN_ISBN = ISSN_ISBN;
    }

    public String getIndice() {
        return indice;
    }

    public void setIndice(String indice) {
        this.indice = indice;
    }

    public Idioma getIdioma() {
        return idioma;
    }

    public void setIdioma(Idioma idioma) {
        this.idioma = idioma;
    }

    public void setCapitulosToString(String capitulosToString) {
        this.capitulosToString = capitulosToString;
    }

    public ArrayList<Tema> getTemas() {
        return temas;
    }

    public void setTemas(ArrayList<Tema> temas) {
        this.temas = temas;
    }

    public ArrayList<Apoio> getApoios() {
        return apoios;
    }

    public void setApoios(ArrayList<Apoio> apoios) {
        this.apoios = apoios;
    }

    public int getQuantidadePaginas() {
        return quantidadePaginas;
    }

    public void setQuantidadePaginas(int quantidadePaginas) {
        this.quantidadePaginas = quantidadePaginas;
    }

    public void addTema(Tema tema) {
        this.temas.add(tema);
    }

    public void addApoio(Apoio apoio) {
        this.apoios.add(apoio);
    }

    @Override
    public String getObraToString() {
        String obraToString = "";
        obraToString = this.getOrganizadoresToStringReferencia() + "<b>" +super.getTituloCitacao() + "</b>" +", " + super.getCidadePublicacao() + ": " + this.editora.getNome() + ", " + super.getAnoPublicacao() + ". " + this.quantidadePaginas + "p";

        return obraToString;
    }

    public String getCapitulosToString() {
        capitulosToString = "<ol  type= \"disc\" > ";
        Iterator i = capitulos.iterator();
        Capitulo c = new Capitulo();
        while (i.hasNext()) {
            c = (Capitulo) i.next();
            String resumoCapitulo = c.getCapituloToString();
            capitulosToString = capitulosToString + resumoCapitulo;
        }
        capitulosToString = capitulosToString + " </ol>";
        System.out.println(capitulosToString);
        return capitulosToString;
    }

    @Override
    public String getAutoresToString() {

        super.setAutoresToString(new String());
        Iterator i = organizadores.iterator();
        Autor a = new Autor();
        String organizadoresToString = "";
        while (i.hasNext()) {
            a = (Autor) i.next();

            String nomeAutor = a.getUltimoNome() + ", " + a.getRestanteNome() + "; " + "<br />";
            organizadoresToString = organizadoresToString + nomeAutor;
            


        }

        return organizadoresToString;

    }
    
    @Override
    public String toString() {
        String toString = "<b>Tipologia da Obra</b> <br/>" + getTipo() + "<br/><br/>";
        toString = toString + "<b>Título</b> <br/>" + getTitulo() + "<br/><br/>";
        toString = toString + "<b>Autores</b> </br>" + getAutoresToString() + "<br/><br/>";
        toString = toString + "<b>Publicação</b></br>" + getCidadePublicacao()+", "+ getEditora().getNome() + ", "+ getAnoPublicacao()+ "<br/><br/>";
        toString = toString + "<b>Índice</b> </br>" + getCapitulosToString() + "<br/><br/>";
        toString = toString + "<b>Apoio(s)</b> </br>" + getApoiosToString() + "<br/><br/>";
        toString = toString + "<b>Palavras-chave</b> </br>" + getTemasToString() + "<br/><br/>";

        return toString;
    }

    public String getTemasToString() {
        temasToString = "<ul>";
        Iterator i = temas.iterator();
        Tema t = new Tema();
        while (i.hasNext()) {
            t = (Tema) i.next();
            String tema = t.getTema();

            temasToString = temasToString + "<li>" + tema + "<li/><br>";
        }

        temasToString = temasToString + "<ul/>";
        return temasToString;
    }
    
    public String getOrganizadoresToStringReferencia() {
        String organizadoresToStringReferencia = new String();
        Iterator i = organizadores.iterator();
        Autor a = new Autor();
        while (i.hasNext()) {
            a = (Autor) i.next();
            String nomeAutor = a.getUltimoNome() + ", " + a.getRestanteNome() + "; ";

            organizadoresToStringReferencia = organizadoresToStringReferencia + nomeAutor;
        }

       
        return organizadoresToStringReferencia;
    }

    public String getApoiosToString() {
        apoiosToString = "<ol>";
        Iterator i = apoios.iterator();
        Apoio a = new Apoio();
        while (i.hasNext()) {
            a = (Apoio) i.next();
            String tema = a.getNome();

            apoiosToString = apoiosToString + "<li>" + tema + "<li/>";
        }

        apoiosToString = apoiosToString + "<ol/>";
        return apoiosToString;
    }

    public ArrayList<Capitulo> getCapitulos() {
        return capitulos;
    }

    public void setCapitulos(ArrayList<Capitulo> capitulos) {
        this.capitulos = capitulos;
    }
    private ArrayList<Autor> organizadores;
    private Formato formato;
    private Editora editora;
    private String ISSN_ISBN = "";
    private String indice = "";
    private Idioma idioma;
    private ArrayList<Tema> temas;
    private ArrayList<Apoio> apoios;
    private int quantidadePaginas;
    private String capitulosToString = "";
    private ArrayList<Capitulo> capitulos;
    private String temasToString = "";
    private String apoiosToString = "";
}
